home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / dflat2.zip / SYSMENU.C < prev    next >
Text File  |  1991-03-20  |  2KB  |  79 lines

  1. /* ------------- sysmenu.c ------------ */
  2.  
  3. #include <stdio.h>
  4. #include <dos.h>
  5. #include "dflat.h"
  6.  
  7. extern MENU SystemMenu[];
  8. extern MENU *ActiveMenu;
  9. static MENU *holdmenu;
  10.  
  11. WINDOW SystemMenuWnd = NULL;
  12.  
  13. int SystemMenuProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  14. {
  15.     switch (msg)    {
  16.         case CREATE_WINDOW:
  17.             holdmenu = ActiveMenu;
  18.             ActiveMenu = SystemMenu;
  19.             SystemMenu[0].Selection = 0;
  20.             break;
  21.         case CLOSE_WINDOW:
  22.             ActiveMenu = holdmenu;
  23.             SystemMenuWnd = NULL;
  24.             break;
  25.         default:
  26.             break;
  27.     }
  28.     return DefaultWndProc(wnd, msg, p1, p2);
  29. }
  30.  
  31. void BuildSystemMenu(WINDOW wnd)
  32. {
  33.     int lf = GetLeft(wnd)+1;
  34.     int tp = GetTop(wnd)+1;
  35.     int ht = MenuHeight(SystemMenu[0].Selections);
  36.     int wd = MenuWidth(SystemMenu[0].Selections);
  37.  
  38.     if (lf+wd > SCREENWIDTH-1)
  39.         lf = (SCREENWIDTH-1) - wd;
  40.     if (tp+ht > SCREENHEIGHT-2)
  41.         tp = (SCREENHEIGHT-2) - ht;
  42.  
  43.     SystemMenuWnd = CreateWindow(POPDOWNMENU, NULL,
  44.                     lf,    tp,    ht,    wd,    NULL, wnd, SystemMenuProc, 0);
  45.  
  46.     if (wnd->condition == ISRESTORED)
  47.         DeactivateCommand(ID_SYSRESTORE);
  48.     else
  49.         ActivateCommand(ID_SYSRESTORE);
  50.  
  51.     if (TestAttribute(wnd, MOVEABLE) && wnd->condition != ISMAXIMIZED)
  52.         ActivateCommand(ID_SYSMOVE);
  53.     else
  54.         DeactivateCommand(ID_SYSMOVE);
  55.  
  56.     if (wnd->condition != ISRESTORED ||    TestAttribute(wnd, SIZEABLE) == FALSE)
  57.         DeactivateCommand(ID_SYSSIZE);
  58.     else
  59.         ActivateCommand(ID_SYSSIZE);
  60.  
  61.     if (wnd->condition == ISMINIMIZED || TestAttribute(wnd, MINMAXBOX) == FALSE)
  62.         DeactivateCommand(ID_SYSMINIMIZE);
  63.     else
  64.         ActivateCommand(ID_SYSMINIMIZE);
  65.  
  66.     if (wnd->condition != ISRESTORED ||    TestAttribute(wnd, MINMAXBOX) == FALSE)
  67.         DeactivateCommand(ID_SYSMAXIMIZE);
  68.     else
  69.         ActivateCommand(ID_SYSMAXIMIZE);
  70.  
  71.  
  72.     SendMessage(SystemMenuWnd, BUILD_SELECTIONS,
  73.                 (PARAM) SystemMenu, 0);
  74.     SendMessage(SystemMenuWnd, SHOW_WINDOW, 0, 0);
  75. }
  76.  
  77.  
  78.  
  79.